Expression

SuperBASIC expressions can be string, numeric, logical or a mixture; unsuitable
data types are automatically converted to a suitable form by the system wher-
ever this is possible.

monop:= | +
        | -
        | NOT

expression:= | [monop] expression operator expression
             | (expression)
             | atom

             atom:= | variable
                    | constant
                    | function [ (expresison {, expression}) ]
                    | array_element

                    variable:= | identifier
                               | identifier%
                               | identifier$

                    function:= | identifier
                               | identifier%
                               | identifier$

                    constant:= | digit {digit}
                               | {digit} . {digit}
                               | {digit} . {digit} E {digit}

The final value returned by the evaluation of the expression can be integer
giving an integer_expression, string giving a string_expression or floating
point giving a floating_expression. Often floating point and integer expressions
are equivalent and the term numeric_expression is then used.

Logical operators can be included in an expression. If the specified operation
is true then a one is returned as the value of the operation. If the operation
is false then a zero is returned. Though logical operators can be used in any
expression they are usually used in the expression part of an IF statement.

example:  test_date + 23.3 + 5
          "abcdefg"(2 TO 4)
          32.1 * (colour=1)
          count = -limit
